/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Christopher
 */
import java.util.Random;

public class Cliente {
    private int tiempoE;
    private int tiempoO;
    private int tiempoS;
    private int tiempoT;
    private int esperar;
    private int cola;
    private boolean estado;
    private Random aleatorio = new Random();
    
   /**
     * Constructor de eventos Cliente muestra tiempoos necesarios
     */
    public Cliente(){
        this.tiempoE = 0;
        this.tiempoO = 0;
        this.tiempoS = 0;
        this.tiempoT = 0;
        this.estado = true; //Haciendo cola
    }
    /**
     * SetTiempoE tiempo de entrada
     * @param tiempoE 
     */
    public void setTiempoE(int tiempoE){
        this.tiempoE =  tiempoE;
    }
    /**
     * setTiempoO obtiene un random de 1-30 para el tiempo de transaccion
     */
    public void setTiempoO(){
        tiempoO = aleatorio.nextInt(30)+1 ;
    }
    /**
     * setTiempo S es el tiempo de transaccion menos el de Entrada
     */
    public void setTiempoS(){
        this.tiempoS = tiempoO - tiempoE;
    }
    /**
     * setTiempoT es el tiempo total incluyendo el tiempo de espera
     * @param value 
     */
    public void setTiempoT(int value ){
        this.tiempoT = tiempoO + tiempoE + value;
    }
    /**
     * setEsperar
     * @param esperar 
     */
    public void setEsperar(int esperar){
        this.esperar = esperar;
    }
    /**
     * 
     * @param estado 
     */
    public void setEstado(boolean estado){
        this.estado = estado; //true entrada false salida
    }
     /**
     * setCola devuelve la posición de caja en la que se encuentra el cliente
     * @param cola 
     */
    public void setCola(int cola){
        this.cola = cola;
    }
    /**
     * getTiempoE obtiene el tiempo de entrada
     * @return int
     */
    public int getTiempoE(){
        return tiempoE;
    }
    /**
     * getTiempoO obtiene el tiempo de transacción
     * @return int
     */
    public int getTiempoO(){
        return tiempoO;
    }
    /**
     * getTiempoS obtiene el tiempo de Salida
     * @return int
     */
    public int getTiempoS(){
        return tiempoS;
    }
    /**
     * Obtiene el tiempo Total
     * @return int
     */
    public int getTiempoT(){
        return tiempoT;
    }
    /**
     * 
     * @return int
     */
    public int getEsperar(){
        return esperar;
    }
    /**
     * getCola retorna la posicion de la caja en la que se encuentra
     * @return int
     */
    public int getCola(){
        return cola;
    }
    /**
     * getEstado obtiene el estado actual del Cliente... entrando o saliendo
     * @return boolean
     */
    public boolean getEstado(){
        return estado;
    }
    
    /**
     * Obtiene la descripcion de tiempos y estado del cliente
     * @return String
     */
    @Override
    public String toString(){
        String desc = "";
        desc += "Cliente se ecuentra en caja: " + cola + "\n";
        if (estado){
            desc += "El cliente se encuentra en cola" + "\n";
        }
        else{
            desc += "El cliente va de salida" + "\n";
        }
        desc += "Tiempo de entrada: " + tiempoE + "\n";
        desc += "Tiempo de espera: " + esperar + "\n";
        desc += "Tiempo de transaccion: " + tiempoO + "\n";
        desc += "Tiempo de salida: " + tiempoT + "\n";
        return desc;
    }
}